// 普通构造函数
function Parent(x,y) { 
    this.x=x;
    this.y=y;
}
Parent.prototype.add=function(){
    console.log(this.x+this.y);
}
var child=new Parent(1,2);
child.add();
console.log(typeof Parent); //'function'
console.log(Parent.prototype.constructor===Parent); //true
console.log(child.__proto__===Parent.prototype); //true
console.log('child:')
console.log(child);
//child 是一个实例对象 所以可以继续为child 添加属性和方法
child.x=2;
console.log(child.x);//2

// 使用ES6 class
class Parent2{
    constructor(x,y){
        this.x=x,
        this.y=y;
    }
    add(){
        console.log(this.x+this.y);
    }
}
var child2=new Parent2(5,5);
child2.add();
console.log(typeof Parent2); //'function'
console.log(Parent2.prototype.constructor===Parent2); //true
console.log(child2.__proto__===Parent2.prototype); //true
console.log(child2)
/**
 * 所以说class本身和普通的构造函数本质上是一样的
 * 在class里添加的方法实质上类似于普通函数在原型上添加的方法一样
 * 所以这里实质是一个语法糖的形式
*/
